package com.wuzuqing.android.eightdiagrams

import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.CheckBox
import android.widget.Spinner
import android.widget.TextView
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.loper7.date_time_picker.DateTimeConfig
import com.loper7.date_time_picker.dialog.CardDatePickerDialog
import com.wuzuqing.android.eightdiagrams.base.BaseAdapter
import com.wuzuqing.android.eightdiagrams.model.QiMenDunJiaItem
import com.wuzuqing.android.eightdiagrams.model.QiMenDunJiaModel
import com.wuzuqing.android.eightdiagrams.term.ExactDate
import com.wuzuqing.android.eightdiagrams.term.Solar
import com.wuzuqing.android.eightdiagrams.utils.DataUtils
import java.util.*


class QiMenDunJiaActivity : BaseActivity() {


    lateinit var rcv: RecyclerView
    lateinit var tvResult: TextView
    lateinit var tvTips: TextView
    lateinit var tvJuResult: TextView
    lateinit var dunSpinner: Spinner
    lateinit var mOriginBox: CheckBox
    private var mSelectJuIndex = 0
    private val mAdapter by lazy {
        QiMenDunJiaV2Adapter()
    }
    val itemList = mutableListOf<String>()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_qimendunjia)
        rcv = findViewById(R.id.rcv)
        tvResult = findViewById(R.id.tv_result)
        tvTips = findViewById(R.id.tv_tips)
        tvJuResult = findViewById(R.id.tv_ju_result)
        dunSpinner = findViewById(R.id.dunSpinner)
        itemList.add("无")
        for (i in 1 until 10) {
            itemList.add("阳$i")
        }
        for (i in 1 until 10) {
            itemList.add("阴$i")
        }
        dunSpinner.adapter = ArrayAdapter(
            this, android.R.layout.simple_spinner_item, android.R.id.text1, itemList
        )
        dunSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                mSelectJuIndex = position
                reloadData(mSelectTime)
            }

            override fun onNothingSelected(parent: AdapterView<*>?) {
            }
        }
        findViewById<View>(R.id.selectTime).setOnClickListener {
            CardDatePickerDialog.builder(this)
                .setChooseDateModel(DateTimeConfig.DATE_LUNAR)
                .setDefaultTime(mSelectTime)
                .setOnChoose { time ->
                    reloadData(time)
                }
                .build().show()
        }
        findViewById<View>(R.id.preDay).setOnClickListener {
            reloadData(mSelectTime - 86400 * 1000)
        }
        findViewById<View>(R.id.preJu).setOnClickListener {
            reloadData(mSelectTime - 3600 * 2 * 1000)
        }
        findViewById<View>(R.id.nextDay).setOnClickListener {
            reloadData(mSelectTime + 86400 * 1000)
        }
        findViewById<View>(R.id.nextJu).setOnClickListener {
            reloadData(mSelectTime + 3600 * 2 * 1000)
        }
        findViewById<View>(R.id.nextDun).setOnClickListener {
            dunSpinner.setSelection((mSelectJuIndex + 1) % itemList.size)
        }
        findViewById<View>(R.id.preDun).setOnClickListener {
            dunSpinner.setSelection((mSelectJuIndex - 1 + itemList.size) % itemList.size)
        }
        mOriginBox = findViewById(R.id.originBox)
        mOriginBox.setOnCheckedChangeListener { _, flag ->
            mAdapter.changeShowState(flag)
        }
        mAdapter.setOnItemClickListener(object : BaseAdapter.OnItemClickListener<QiMenDunJiaItem> {
            override fun onItemClick(data: QiMenDunJiaItem, position: Int) {
                val sb = StringBuilder()

                //股票
                //景门+宫位
                //值使+八神
                //生门+宫位
                //八神,九宫,八门
                //  "值符:${menBaGua.zhiXin}星落${menBaGua.zhiGongNum}宫 值使:${
                //                        menBaGua.zhiMen
                sb.append(data.men).append(":").append(DataUtils.getGupiao(data.men)).append("\n")
                sb.append(data.shen).append(":").append(DataUtils.getGupiao(data.shen)).append("\n")
                sb.append(data.xing).append(":").append(DataUtils.getGupiao(data.xing)).append("\n")
                //景门震值符落宫相生|指数一路上涨，牛市在即
//
                if (data.men == mMenBaGua?.zhiMen) {
                    sb.append("值使+八神").append(":").append(DataUtils.getGupiao("值使${data.shen}")).append("\n")
                }
                //值使九地|九地代表市场不错，代表屯积、为慢、为长线；值使、时干上乘九地，长时间盘整或长时间阴跌。
                //生门乾|回落
                if (data.men == "生门") {
                    sb.append("生门+宫位").append(":").append(DataUtils.getGupiao("生门${data.gua}")).append("\n")
                }
                if (data.men == "景门") {
                    val jingMenGong = data.gua
                    val zhiFuGong = mMenBaGua?.list?.firstOrNull { it.shen == "值符" }?.gua ?: "无"
                    val shengKe = DataUtils.getShengKe(jingMenGong, zhiFuGong)
                    val jm = DataUtils.getGupiao("景门震值符落宫相${shengKe}")
                    if (!jm.isNullOrEmpty()) {
                        sb.append("景门+宫位").append(":").append(jm).append("\n")
                    }
                    //乾|1|天|1-1-1|南|西北|金|水|木|兑旺于秋，衰于冬|阳|暂无
                    //兑|2|泽|0-1-1|东南|西|金|水|木|兑旺于秋，衰于冬|阴|少女
                    //离|3|火|1-0-1|东|南|火|土|金|旺于夏，衰于四季|阴|中女
                    //震|4|雷|0-0-1|东北|东|木|火|土|旺于春，衰于夏|阳|长男
                    //巽|5|风|1-1-0|西南|东南|木|火|土|旺于春，衰于夏|阴|长女
                    //坎|6|水|0-1-0|西|北|水|木|火|旺于冬，衰于春|阳|中男
                    //艮|7|山|1-0-0|西北|东北|土|金|水|旺于四季|阳|少男
                    //坤|8|地|0-0-0|北|西南|土|金|水|旺于四季|阴|暂无
                }
                sb.append("天盘地盘:\n")
                //4.两天干只与地支作用
                data.juInfo.forEach {
                    sb.append(it).append(":").append(DataUtils.getQiMenDunJiaJu(it)).append("\n")
                }
                sb.append("\n\n\n")
                sb.append(data.gua).append("宫:\n八神:")
                //1.八神不论生克
                sb.append(DataUtils.getQiMenDunJiaBaShen(data.shen)?.yuYi.orEmpty()).append("\n\n")
                //2.九星只与宫生克
                sb.append("九星:").append(data.xing).append("\t\t")
                val yueZhi = mMenBaGua?.lunar?.baZi?.elementAtOrNull(1)?.getOrNull(1).toString()
                DataUtils.getXingWang(data.xing, yueZhi)?.also {
                    sb.append("月令:").append(it).append("\t\t")
                }
                DataUtils.getXingWang(data.xing, data.gongNum)?.also {
                    sb.append("宫位:").append(it).append("\t\t")
                }
                DataUtils.getXingModel(data.xing)?.also {
                    //水|大凶|阳
                    sb.append("状态:").append(it.jixiong).append("\t\t").append("五行:").append(it.wuxing).append("\n")
                    sb.append(it.impression).append("\n")
                    sb.append("九星介绍:").append(it.desc)
                }
                sb.append("\n")
                //3.八门只与宫生克
                //（1）、门迫——门克宫  （2）、门制——宫克门
                //（3）、门义——宫生门  （4）、门和——门生宫
                //（5）、门比——宫同门  （6）、门伏吟——在原宫位
                //（7）、门反吟——门到对面宫
                if (data.isPoGong) {
                    sb.append("迫宫,")
                }
                sb.append(DataUtils.getQiMenDunJiaBaMen(data.men)?.yuYi.orEmpty()).append("\n")


                //下天干体现上天干
                tvTips.text = sb
            }
        })
        rcv.layoutManager = GridLayoutManager(this, 3)
        rcv.adapter = mAdapter
        window.decorView.postDelayed({
            reloadData(ExactDate.fromYmdHms(2025, 6, 19, 9, 15, 0).time)
//            reloadData(ExactDate.fromYmdHms(2023,8,28,22,5,0).time)
//            reloadData(Calendar.getInstance().timeInMillis)
        }, 500)
        //甲子旬中戌亥空,甲戌旬中申酉空,
        //甲申旬中午未空,甲午旬中辰巳空,
        //甲辰旬中寅卯空,甲寅旬中子丑空。
        val sb = java.lang.StringBuilder()

        sb.append("八卦:坎一、坤二、震三、巽四、中五、乾六、兑七、艮八、离九\n")
        sb.append("神盘:值符、腾蛇、太阴、六合、白虎、玄武、九地、九天\n")
        sb.append("门盘:休门、生门、伤门、杜门、景门、死门、惊门、开门\n")
        sb.append("星盘:天蓬、天任、天冲、天辅、天英、天芮/天禽、天柱、天心\n")
        sb.append("甲子旬中戌亥空,甲戌旬中申酉空\n")
        sb.append("甲申旬中午未空,甲午旬中辰巳空\n")
        sb.append("甲辰旬中寅卯空,甲寅旬中子丑空\n")
        sb.append("甲子旬=>乙丑、丙寅、丁卯、戊辰、己巳、庚午、辛未、壬申、癸酉\n")
        sb.append("甲戌旬=>乙亥、丙子、丁丑、戊寅、己卯、庚辰、辛巳、壬午、癸未\n")
        sb.append("甲申旬=>乙酉、丙戌、丁亥、戊子、己丑、庚寅、辛卯、壬辰、癸巳\n")
        sb.append("甲午旬=>乙未、丙申、丁酉、戊戌、己亥、庚子、辛丑、壬寅、癸卯\n")
        sb.append("甲辰旬=>乙巳、丙午、丁未、戊申、己酉、庚戌、辛亥、壬子、癸丑\n")
        sb.append("甲寅旬=>乙卯、丙辰、丁巳、戊午、己未、庚申、辛酉、壬戌、癸亥\n")
        sb.append("冬至惊蛰一七四，小寒二八五\n")
        sb.append("春分大寒三九六，立春八五二\n")
        sb.append("谷雨小满五二八，雨水九六三\n")
        sb.append("清明立夏四一七，芒种六三九\n")
        sb.append("夏至白露九三六，小暑八二五\n")
        sb.append("大暑秋分七一四，立秋二五八\n")
        sb.append("霜降小雪五八二，大雪四七一\n")
        sb.append("处暑一四七，立冬寒露六九三\n")
    }

    private var mSelectTime = 0L
    var mMenBaGua: QiMenDunJiaModel? = null

    private fun aaa(menBaGua: QiMenDunJiaModel, solar: Solar) {
        mAdapter.menBaGua = menBaGua
        mAdapter.setList(menBaGua.list)
        val sb = java.lang.StringBuilder()
        sb.append(menBaGua.solar?.toYmdHms())
        sb.append("\n农历：" + menBaGua.lunar?.toSimpleString())
        sb.append("\n第一步:定八字=").append(menBaGua.lunar?.baZi)
        sb.append("\n第二步:定局=${menBaGua.dingJu}")
        sb.append(
            "\n第四,五,六步:旬首=${menBaGua.xunShou}${menBaGua.zhiGan} \t空亡:${menBaGua.kongWang}\t 马星:${menBaGua.yiMa}\n" +
                    "值符:${menBaGua.zhiXin}星落${menBaGua.zhiGongNum}宫 值使:${
                        menBaGua.zhiMen
                    }落${menBaGua.menGongShu}宫"
        )
//        val open = DataUtils.getFc3DOpenDate(menBaGua.solar?.toYmd().orEmpty())
//        if (open.nums.isNotEmpty()) {
//            var sum = 0
//            for (num in open.nums) {
//                sum += num.toInt()
//            }
//            sb.append("\n开奖号码=${open.nums.toTypedArray().contentToString()} 总和=$sum\t")
//        }

        // String tianPanYong = "乙丙丁";
        //        String menPanYong = "景门开门生门";
        //        String xingPanYong = "天辅天柱";
        //        String shenPanYong = "六合太阴九地";
        sb.append("\n今日吉时:${DataUtils.getJiShi(menBaGua.lunar?.baZi?.elementAtOrNull(2))}")
        DataUtils.getLhcInfo(menBaGua.solar!!.toYmd())?.also {
            val tx = it.list.firstOrNull()
            val sx = getSx(tx?.animal.orEmpty())
            sb.append("\n").append(it.no).append(",特肖:").append(tx?.num).append(sx)
        }
//        sb.append("\n乙丙丁\t\t景门开门生门\n天辅天柱\t\t六合太阴九地")
        tvResult.text = sb

    }
    private fun getSx(zhi:String ):String{
        return when(zhi){
            "马" -> return "午马"
            "羊" -> return "未羊"
            "猴" -> return "申猴"
            "鸡" -> return "酉鸡"
            "狗" -> return "戌狗"
            "猪" -> return "亥猪"
            "鼠" -> return "子鼠"
            "牛" -> return "丑牛"
            "虎" -> return "寅虎"
            "兔" -> return "卯兔"
            "龙" -> return "辰龙"
            "蛇" -> return "巳蛇"
            else -> return zhi
        }
    }
    private fun reloadData(time: Long) {
        if (time == 0L) {
            return
        }
        mSelectTime = time
        Thread {
            val solar = Solar.fromDate(ExactDate.fromTimeInMillis(time))
            mMenBaGua = DataUtils.printQiMenBaGua(solar, itemList[mSelectJuIndex])
            val menBaGua = mMenBaGua ?: return@Thread
            runOnUiThread {
                aaa(menBaGua, solar)
            }

            val guPiao = guPiao(menBaGua)
            runOnUiThread {
                tvTips.text = guPiao
            }
            //        tvTips.text = DataUtils.getLastFiveDayQmdj(solar, itemList[mSelectJuIndex])
        }.start()
    }

    private fun guPiao(menBaGua: QiMenDunJiaModel): String {
        val sb = java.lang.StringBuilder()
        //核心参数符号,值符、值使；
        // 暗干、隐干、应期干；
        // 十二建陈、月将、贵人、神煞、地支；三传（三元）、八卦方位（转宫飘宫）、
        // 九宫阴阳（五行克应）、二十四山、二十八星宿、七十二候、八十一格局

        //交易股票，可以定义为是投资求财，也具有是赌博性质的投机求财；所以，分析时首先看甲子戊和生门关系，
        // 其次看玄武是否临日干、生日干。也就是说奇门预判股市中的个股方式多样，每个人的切入点是不同的
        //纲领性用神：日干为股民，时干为大盘、为股市，甲子戊为资本，生门为利润
        //年干为政府、为管理机构，代表政策方面的因素；月干为竞争者，为行业，同行；日干为个股，为操盘人，自己所持有的股票；时干为大盘、为市场趋势，为自己对弈的一方
        //值符，代表整个股市的行情，本身落宫、能量关系决定整个盘局；
        //腾蛇，代表变化无常，虚假无实，为值使、时干上乘腾蛇都是虚假的，信息不可靠；
        //白虎，它是危险信号，杀伤力较强，为值使、时干上乘白虎，大盘要下跌；
        //玄武，代表投机，代表短线炒作；
        //九地，不错，代表屯积、为慢、为长线；
        //九天，代表上升，代表冲高，防回落，随时准备出货。（这些都是指八神临时干、值使门）
        //还有：太阴、六合
        //D、九星：
        //为天时、大气候、宏观面；配对个股进行分析，只作为业绩的优劣参考。
        //E、八门：
        //它代表股市的动态，尤其是值使门，这个是大参数：
        //值使门落三吉门：开、休、生三门，都表示为上涨因素，为建仓良好时机，也代表绩优股；
        //值使门落三凶门：伤、死、惊三门，都表示下跌、低迷，以观望为主或退出股市；其中死门、惊门最凶，跌幅很大；伤、杜二门一般是冲高回落；景门代表上升，唯一的缺点就是不长久。
        //F、九宫：
        //九宫反映的是股市时间和空间的对应关系，九宫内的各个参数又反映股市各大板块的信息。
        //如：汽车板块，以伤门为主。从八门落宫找到对应的落宫，系统分析八个宫里的哪个格局好，与伤门落宫生克关系；又比如是东北产的汽车，你就要先竖看艮宫的状态，然后再看时干、值使，旺相休囚关系；再者横看八宫中哪个宫来生伤门的宫，比如：伤门为汽车，伤门落在三宫，坎宫生三宫，这个时候可以建议买北方汽车类的股票。
        //G、十天干：
        //通过当天的年月日时干定，值使落宫的旺相休囚决定股市的动态，落宫的天地干格局，能对各大板块各股票和大盘作出优劣判断。
        //吉格：返首、跌穴，唾手可得（戊加丙，旺相，逢吉门、神、星为上升；丙加戊，如遇反吟，可高卖低买，如门迫、入库等，价格易归原位）；
        //凶格：伏宫、飞宫，换股票；
        //刑格、悖格就得早抽身（丙加符、符加丙、丙加丙、丙加癸、癸加丙、庚加己为刑格悖格）； 丙加庚宜买，庚加丙宜卖；
        //五不遇时，空费心力，不宜操作；
        //癸加丁、丁加癸，下跌。

        //在分析股票之时，以年干为强庄，政府机构；临值符的时候，也会看强庄+大游资

        //再看，用神干宫，其干在宫中所处于旺相休囚之态；
        //
        //既看，落宫内外、远近；又看，宫内中，有无四害庚虎，有门迫，门迫是否入墓，空亡，还是否存在击刑，再来看日干与时干上下关系，四害关系；
        //
        //通过竖看宫位中的天、地、人、神的关系，也就是参数核心关系；如，日干落宫得三吉门+三奇+戊+值符+吉星；即表示自身条件比较好，有天时、地利、人和相助。
        //
        //再然后，分析其他宫与日干、年命参数落宫的关系，相生者吉，相克者凶；如果克日干、年命落宫是三凶门+庚和辛、壬、癸+值使（死、惊、伤）+凶星+凶神，要是还有五不遇时，伏吟反吟，还带马星这个事就在眼前了；又是旺相之地，则表示来势凶猛，置于自己于死地。
        //
        //最后，想分析其中的前因后果，可以通过转宫与翻宫来定夺。
        //
        //转宫，转宫主要是以八卦先后天落宫转换，比如：伏吟信息，这个时候就得根据落宫位先后天八卦转宫看其他宫位的信息，落座的后天宫往先天转为过去之事，落座的先天宫往后天宫转为未来之事。
        //
        //翻宫，翻宫主要是天地干落宫进行翻越之事，比如：反吟信息，这个时候想要找到源头和未来走势，就得应用翻宫；比如：日干为自己，自己的落宫天干
        // ，地盘干往天盘干翻，就是问过去之事；天盘干往地盘干翻，就是问未来。
        //
        //不管是转宫还是翻宫，最多只能翻转三次，是不过三，其实再翻转是没有意义了。
        //
        //此时，你的所求之事，都可以按照顺序完成推演，要是再把六壬植入，我们就叫奇门穿壬，这个时候的精准信息就会更稳定。如股票投资就会让我们更为顺利；而如用神干宫通过翻转之后，是克制时干宫的情况，那事主就需要加强防范，交易股票的选定股票是关键；多做基本功，遇事不废，这样才能达成自我所望。
        //
        //当遇到自身不得天时、地、利(击刑、门迫) , 又被时干宫克住，必然不利于求财。所以在交易断局时要充分考虑，不仅要分析单宫，还要思索多宫之间的联系，这样才会减少误判。
        //
        //股市中的人际关系是看不见的复杂，也是我们必须要关注的一个个活生生地人事关系，所以，兰名钧才总结一下一套系统的断投资股票流程。
        //二、整体盘局分析
        //第一、横看
        //在奇门九宫位中，我们都会看到这64个参数，它们之间各个层级之间，都会有各自关联的生克关系，这种二元制对弈关系就是断卦的原则。
        //
        //既无论是十天干作为用神，还是九星、八门、八神作为用神，主要是以它们落宫的五行属性进行竖向、横向的比较，再看其生克关系；这里还要包括翻宫、转宫；最后才来看生克关系。
        //
        //如：日干克时干，指的是日干落宫克时干落宫；日干克病神，指的是日干落宫克天芮星落宫；开门克日干，指的同宫开门克日干落宫；值符克天蓬，同宫中值符克天蓬，
        // 同宫是竖看，在宫内看；白虎克天蓬，这里白虎属金，天蓬属水，本不相克，这里相克指的是白虎落宫五行克天蓬星落宫五行；
        // 这就是横向看等等；横向看，主要是八个宫位的生克关系，是一个整体盘局。
        //
        //第二、竖看
        //一般仅限单宫，于一个宫内的八卦（地支）与天（九星+干）、地（八卦+干）、人（八门+干定值使）、神（八神定值符）四层的旺衰、四害（六击、入墓、空亡、门迫），
        // 六庚、白虎，马星、格局、伏吟反吟、暗隐。 如天盘与地盘的关系叫格局，主要看九星干五行与地盘干五行属性上的生克关系；
        //
        //1：九星与八卦（地盘宫）的关系，也叫格局：
        //九星克宫位，就是天干的天克地；也就是天心星属金+干，落震3宫+天干，则格局为天盘干克地盘干，天干克地干；这里为天地格局，也叫格局。反之就是相生。
        //
        //2：八门与八卦（地盘宫）的关系：
        //八门克宫位，为门迫，如开门属金，落震3宫，则为门克宫，古人叫门迫或门被迫；也就是开门金+干，落震3宫+天干，格局就是天盘干克人盘干，也叫天人格局，这个是天与人的关系，地盘干克人盘干；这里为地人格局，也叫格局。 门的七种状态：宫代表主人，门代表客人。
        //
        //（1）、门迫——门克宫；就是客人克主人。如杜门落坤2宫，木克土，门克宫，叫门受迫；
        //
        //（2）、门制——宫克门；就是主人克客人。如开门落离9宫，火克金，宫克门，叫门受制；
        //
        //（3）、门义——宫生门；就是主人生客人。如景门落震3宫，则木生火，宫生门。
        //
        //（4）、门和——门生宫；就是客人生主人。如惊门落坎1宫，则金生水，门生宫；
        //
        //（5）、门比— 宫同门；就是客与主比和；如伤门落巽4宫，则木比木，门比宫；
        //
        //（6）、门伏吟——在原宫位；就是客人不动；如开门落6宫，则金比金，门比宫
        //
        //（7）、门反吟——门到对面宫；就是客人反动；如景门落坎宫，则火克水，门克宫。
        //
        //3：天、地、人盘中十天干落宫:
        //1）、看天、地、人三盘之间形成的十干克应，主要事项明显现象看天盘天干或地盘天干落宫所处的状态，即长生、帝旺、死、墓、绝等以外；
        //
        //2）、看天盘天干与地盘天干的生克关系，还有六甲中的地支（甲子、甲戌、甲申、甲午、甲辰、甲寅中的子、戌、申、午、辰、寅）与其人盘宫暗含的地支（坎宫的子、艮宫的丑等）之间的刑冲克害等。
        //
        //3）、九星与八门之间也可以比较其生克关系，看天与人的事项暗隐现象，看天盘天干与人盘天干的落宫所处的状态与组合关系。
        //
        //4）、八卦与八门之间也可以比较其生克关系，看地与人的事项暗隐现象，看地盘天干与人盘天干的落宫所处的状态与组合关系。
        //
        //5）、其天地人盘宫暗含的地支（坎宫的子、艮宫的丑等）之间的刑冲克害、空亡、入墓等关系状态。
        //
        //4、八神，一般不以其五行属性与地盘宫比较其生克关系。
        //第三、是看远近、内外、快慢。
        //阳遁
        //
        //以一、八、三、四宫为内、为近、为快；
        //
        //以九、二、七、六宫为外、为远、为慢。
        //
        //阴遁正好相反
        //
        //即以九、二、七、六宫为内、为近、为快；
        //
        //以一、八、三、四宫为外、为远、为慢。
        //
        //另外，伏吟主迟，反吟主速。
        //
        //第四、是看高低、旺衰。
        //所谓高低，可以理解为高潮低潮，即旺、相或休、囚、死废。
        //
        //十天干的旺衰主要按十天干生旺死绝表（即寄生十二宫）来断，兼看月令。 而八门、九星的旺衰则主要按月令、节气来断，同时考虑其落宫状态。 其中九星的旺相休囚废与五行的旺相休囚死不同。 总之，必须横看、竖看、远看、近看、高看、低看，全盘看问题，才能提高准确率。
        //
        //实践证明，从不同角度，运用多重用神，多侧面多层次地看问题，其信息在多数情况下都是一致的、同步的。这种全面观察分析问题的方法。
        //
        //全面看、整体看、多层看、多维看比起单独看星、单独看门或单独看日干、时干的方法，其准确率要高得多，提供的信息更加全面、丰富。
        //
        //名家奇门遁甲预测 什么是名家奇门，名就是无形转有形，收纳一切隐藏的能量让自己所驾驭，比如：名载命理，名承利益，名家奇门就是以有形的能量在神奇人事背景之下获得超自我的价值。
        //第一次预测你可能感到有些吃力； 第二次你可能有些眉目了； 第三次你就会喜欢上奇门遁甲这门学问了。 学会名家奇门遁甲预测，既能为自己运筹帷幄又可以为亲朋好友排忧解难,何乐而不为呢?

        DataUtils.getLhcInfo(menBaGua.solar!!.toYmd())?.also {
            sb.append(it).append("\n")
        }
        sb.append("大盘趋势\n")
        menBaGua.list.firstOrNull { it.shen == "值符" }?.also { data ->
            sb.append(data.men).append(":").append(DataUtils.getGupiao(data.men)).append("\n")
//            sb.append(data.shen).append(":").append(DataUtils.getGupiao(data.shen)).append("\n")
            sb.append(data.xing).append(":").append(DataUtils.getGupiao(data.xing)).append("\n")
            data.juInfo.forEach {
                sb.append(it).append(":").append(DataUtils.getQiMenDunJiaJu(it)).append("\n")
            }
        }
        sb.append("\n庄家大户\n")
        menBaGua.list.firstOrNull { it.tianPanGan.contains("戊")   }?.also { data ->
            sb.append(data.men).append(":").append(DataUtils.getGupiao(data.men)).append("\n")
            sb.append(data.shen).append(":").append(DataUtils.getGupiao(data.shen)).append("\n")
            sb.append(data.xing).append(":").append(DataUtils.getGupiao(data.xing)).append("\n")
            data.juInfo.forEach {
                sb.append(it).append(":").append(DataUtils.getQiMenDunJiaJu(it)).append("\n")
            }
        }

        sb.append("\n投资人\n")
        menBaGua.list.firstOrNull { it.isRiGan }?.also { data ->
            sb.append(data.men).append(":").append(DataUtils.getGupiao(data.men)).append("\n")
                .append(DataUtils.getGupiao("日干${data.men}")).append("\n")
            sb.append(data.shen).append(":").append(DataUtils.getGupiao(data.shen)).append("\n")
                .append(DataUtils.getGupiao("日干${data.shen}")).append("\n")
            sb.append(data.xing).append(":").append(DataUtils.getGupiao(data.xing)).append("\n")
                .append(DataUtils.getGupiao("日干${data.xing}")).append("\n")

            data.juInfo.forEach {
                sb.append(it).append(":").append(DataUtils.getQiMenDunJiaJu(it)).append("\n")
            }
        }

        sb.append("\n股票和事件\n")
        menBaGua.list.firstOrNull { it.isShiGan }?.also { data ->
            sb.append(data.men).append(":").append(DataUtils.getGupiao(data.men)).append("\n")
            sb.append(data.shen).append(":").append(DataUtils.getGupiao(data.shen)).append("\n")
            sb.append(data.xing).append(":").append(DataUtils.getGupiao(data.xing)).append("\n")
            data.juInfo.forEach {
                sb.append(it).append(":").append(DataUtils.getQiMenDunJiaJu(it)).append("\n")
            }
        }

        sb.append("\n上市公司判断\n")
        menBaGua.list.firstOrNull { it.men == "开门" }?.also { data ->
            sb.append(data.shen).append(":").append(DataUtils.getGupiao("开门乘"+ data.shen)).append("\n")
            sb.append(data.xing).append(":").append(DataUtils.getGupiao("开门临"+ data.xing)).append("\n")
            if (data.isKongWang) {
                if (data.xing == "天蓬" && data.isRuMu) {
                    sb.append("空亡:").append(DataUtils.getGupiao("开门空亡天蓬凶格")).append("\n")
                } else {
                    sb.append("空亡:").append(DataUtils.getGupiao("开门空亡")).append("\n")
                }
            }
            //以开门为上市公司，开门旺相，带三奇、吉神、吉星、吉格，为效益好的规模大的企业，反之则差
            data.juInfo.forEach {
                sb.append(it).append(":").append(DataUtils.getQiMenDunJiaJu(it)).append("\n")
            }
        }
        //(1)、先看开门宫，为企业的整体情况，开门落3宫，逢空主企业处在半生产状态，上乘值符(空亡)曾经是国家大型企业之一，遇天蓬和壬+庚凶格，说明该企业的业绩大幅下滑。
        //(2)、值符为董事长，在3宫空亡不吉，临开门、壬长期在外，天蓬在经营上比较泼辣大胆。值使为总经理高层管理人员，在4宫上乘九天素质高，总经理或高层管理人员流过洋受过高等培训学习，丁奇主有高的学历或新式经营、天任是经营平稳。
        //值符官与值使官比和主董事长与总经理高层管理人员团结和睦，有利公司发展。
        //(3)、对该上市公司所得利润的判断看生门在离九宫，9宫在未月休囚，生门在未月旺相、但天冲财星休午月令，九宫上乘九地主低下，遇庚利润受阻，这样据九宫2、3、7、9数来看，
        // 7数较为合理，每股利润就为0.07元左右。
        //(4)、对该上市公司经营流动资金的判断，看6宫的甲子戊，它虽旺于月令但人库于6宫，所以可判断为流动资金短缺。
        //(5)、对该上市公司产品及市场的判断，看时干庚落9宫，逢生门大生产有生机，天冲生产效率高，但上乘九地主存货多市场销售不好。

        //代表大盘趋势：用神参数为“直符”；
        //代表庄家大户：用神参数为“戊”；
        //代表股票和事件:用神参数为“时干”；
        //代表投资人：用神参数为“日干或年命干”；
        //买卖股票时限：用神参数为“值使门日干或年命干”
        return sb.toString()
    }

}
